package com.flot.yazb.base.rxjava;

import android.app.Activity;

import com.flot.yazb.base.BApplication;
import com.flot.yazb.base.rxjava.fld.BaseImpl;
import com.flot.yazb.base.rxjava.fld.BaseObserver;
import com.flot.yazb.base.rxjava.fld.Disposable;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;

/**
 * 创建观察者--
 * Created by fengdongfei on 2017/8/25.
 */

public class  RxObServerFactory<T> {


    //创建观察者--Subscriber
    // 除了 Observer 接口之外，RxJava 还内置了一个实现了 Observer 的抽象类：Subscriber。 Subscriber 对 Observer 接口进行了一些扩展
    public  Subscriber<T> createSubscriber(){
        Subscriber<T> subscriber = new Subscriber<T>() {
            @Override
            public void onNext(T s) {
            }

            @Override
            public void onCompleted() {
            }

            @Override
            public void onError(Throwable e) {
            }

            // onStart(): 这是 Subscriber 增加的方法。它会在 subscribe 刚开始，而事件还未发送之前被调用，可以用于做一些准备工作，例如数据的清零或重置。
            // 这是一个可选方法，默认情况下它的实现为空。需要注意的是，如果对准备工作的线程有要求（例如弹出一个显示进度的对话框，这必须在主线程执行），
            // onStart() 就不适用了，因为它总是在 subscribe 所发生的线程被调用，而不能指定线程。要在指定的线程来做准备工作，可以使用 doOnSubscribe() 方法，
            // 具体可以在后面的文中看到。
            @Override
            public void onStart() {
                super.onStart();
            }
        };
        return subscriber;
    }

    // 创建被观察者--Observer
    public Observer<T> createObservable(){
        Observer<T> observer = new Observer<T>() {

            @Override
            public void onNext(T s) {
            }

            @Override
            public void onCompleted() {
            }

            @Override
            public void onError(Throwable e) {
            }
        };
        return observer;
    }


}
